package com.ruoyi.system.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * H5消息列表项聚合视图对象
 * 用于H5端消息列表页面展示，包含列表展示所需的全部字段
 * 避免前端需要多次请求或复杂的数据拼装
 * 
 * @author ruoyi
 * @since 2024-01-01
 */
@Data
public class H5MsgListItemVO {
    
    // ==================== 消息状态信息 ====================
    
    /**
     * 消息子项ID
     * 用于详情查询和操作标识
     */
    private Long itemId;
    
    /**
     * 阅读状态
     * 0-未读, 1-已读
     */
    private Integer readStatus;

    /**
     * 确认状态 0带确认 1已确认
     */
    private Integer status;
    
    /**
     * 签署状态
     * 0-无需签名, 1-未签名, 2-已签名
     * 当模板要求签名时有效
     */
    private Integer signStatus;
    
    /**
     * 处理状态
     * 0-待推送, 1-已推送, 2-已过期, 3-取消, 4-失败
     */
    private Integer processStatus;
    
    /**
     * 最近推送时间
     * 最后一次推送的时间
     */
    private LocalDateTime lastPushTime;

    // ==================== 消息内容信息 ====================
    
    /**
     * 任务ID
     * 关联的推送任务ID
     */
    private Long taskId;
    
    /**
     * 任务编号
     * 系统生成的唯一任务编号
     */
    private String taskNo;
    
    /**
     * 消息标题
     * 基于模板渲染后的最终标题
     */
    private String title;
    
    /**
     * 消息内容
     * 基于模板渲染后的最终内容
     */
    private String content;
    
    /**
     * 消息类型
     * 1-设计资料, 2-主材清单, 3-合同签署, 4-验收信息, 5-财务支付, 6-其他
     */
    private Integer type;
    
    /**
     * 关联项目ID
     */
    private Long projectId;
    
    /**
     * 关联项目名称
     */
    private String projectName;

    /**
     * 关联业务编号
     */
    private String businessNo;

    /**
     * 关联业务名
     */
    private String businessName;

    /**
     * 是否需要签名
     * 0-不需要签名, 1-需要签名
     * 由模板配置控制
     */
    private Integer needSignature;
    
    /**
     * 过期时间
     * 消息的有效期截止时间，可为空
     */
    private LocalDateTime expireAt;
    
    /**
     * 创建时间
     * 消息的创建时间
     */
    private LocalDateTime createTime;
}


